// import { useStore } from "@/stores";

const baseURL = "http://localhost:8082";

// 拦截器实例
const httpInterceptor = {
  // 1.1拦截前的触发
  invoke(options) {
    // 1.1.1地址拼接
    if (!options.url.startsWith("http")) {
      options.url = baseURL + options.url;
    }
    
    // 1.1.2 请求超时 默认60s
    options.timeout = 10000; // 10s
    // 1.1.3 请求头标识
    options.header = {
      // 先保留原有信息
      ...options.header,
      // 再添加修改
      "Content-Type": "application/json",
      // Authorization: "Bearer " + "useStore.store.token",
    };
  },
};

// 1.添加"请求"拦截器
uni.addInterceptor("request", httpInterceptor);
// 添加"文件上传"拦截器
uni.addInterceptor("uploadFile", httpInterceptor);

// 添加"响应"拦截器
export const http = (options) => {
  // 成功调用 resolve
  // 失败调用 reject
  return new Promise((resolve, reject) => {
    uni.request({
      ...options,
      success: (res) => {
        if (res.statusCode >= 200 && res.statusCode < 300) {
          //表示请求成功 只返回 data 里面的数据内容
          resolve(res.data);
        } else if (res.statusCode === 401) {
          // 表示token失效,跳转登录页面
          const store = useStore();
          store.clearStore();
          uni.navigateTo({
            url: "跳转登录页",
          });
          reject(res);
        } else {
          uni.showToast({
            title: res.data.msg || "请求出错",
            icon: "none",
          });
          reject(res);
        }
      },
      fail: (err) => {
        uni.showToast({
          icon: "none",
          title: "网络错误,换个网络试试",
        });
        reject(err);
      },
    });
  });
};
